package com.yuanzi.base.redis;

import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * hash类型缓存
 * @author chengshx
 * @date 2017年5月9日
 */
@Service
public class OuterSetRedisService {

	private static IRedisService redisService;
	
	@Autowired
	public void setRedisService(IRedisService redisService) {
		OuterSetRedisService.redisService = redisService;
	}
	
	/**
	 * set类型缓存
	 * @author chengshx
	 * @param clazz 实体类
	 * @param field id或其他key
	 * @param value
	 */
	public static void sadd(String serviceName, Class<?> clazz, String key, String... members) {
		key = RedisUtils.getStringKey(serviceName, clazz, key);
		redisService.sadd(key, members);
	}
	
	/**
	 * set类型缓存
	 * @author chengshx
	 * @param className 自定义缓存
	 * @param field id或其他key
	 * @param value
	 */
	public static void sadd(String serviceName, String className, String key, String... members) {
		key = RedisUtils.getStringKey(serviceName, className, key);
		redisService.sadd(key, members);
	}
	
	/**
	 * set成员是否存在
	 * @author chengshx
	 * @date 2017年12月25日
	 * @param clazz 实体类
	 * @param member 元素
	 * @return
	 */
	public static Boolean sismember(String serviceName, Class<?> clazz, String key, String member) {
		key = RedisUtils.getStringKey(serviceName, clazz, key);
		return redisService.sismember(key, member);
	}
	
	/**
	 * set成员是否存在
	 * @author chengshx
	 * @date 2017年12月25日
	 * @param className 自定义缓存
	 * @param member 元素
	 * @return
	 */
	public static Boolean sismember(String serviceName, String className, String key, String member) {
		key = RedisUtils.getStringKey(serviceName, className, key);
		return redisService.sismember(key, member);
	}
	
	/**
	 * 设置hash key过期时间
	 * @author chengshx
	 * @param clazz 实体类
	 * @param key id或其他key
	 * @param seconds 过期时间
	 */
	public static void expire(String serviceName, Class<?> clazz, String key, Integer seconds) {
		key = RedisUtils.getStringKey(serviceName, clazz, key);
		redisService.expire(key, seconds);
	}
	
	/**
	 * 设置set key过期时间
	 * @author chengshx
	 * @param clazz 实体类
	 * @param key id或其他key
	 * @param seconds 过期时间
	 */
	public static void expire(String serviceName, String className, String key, Integer seconds) {
		key = RedisUtils.getStringKey(serviceName, className, key);
		redisService.expire(key, seconds);
	}
	
	/**
	 * 删除set类型缓存
	 * @author chengshx
	 * @param clazz 实体类
	 */
	public static void del(String serviceName, Class<?> clazz, String key) {
		key = RedisUtils.getStringKey(serviceName, clazz, key);
		redisService.del(key);
	}
	
	/**
	 * 删除set类型缓存
	 * @author chengshx
	 * @param className 自定义缓存
	 */
	public static void del(String serviceName, String className, String key) {
		key = RedisUtils.getStringKey(serviceName, className, key);
		redisService.del(key);
	}
	
	/**
	 * 获取member的集合
	 * @param serviceName
	 * @param clazz
	 * @param key
	 * @return
	 * @return Set<String>
	 * @author choijung
	 */
	public static Set<String> smembers(String serviceName, Class<?> clazz, String key) {
		key = RedisUtils.getStringKey(serviceName, clazz, key);
		 return redisService.smembers(key);
	}
	
	/**
	 * 获取member的集合
	 * @param serviceName
	 * @param className
	 * @param key
	 * @return
	 * @return Set<String>
	 * @author choijung
	 */
	public static Set<String> smembers(String serviceName, String className, String key) {
		key = RedisUtils.getStringKey(serviceName, className, key);
		 return redisService.smembers(key);
	}
}
